package net

type ClientApi interface {
	// Connect 链接到远程设备
	// ip: 远程设备的ip地址
	// port: 远程设备的端口号
	Connect(ip string, port int) error
	// Send 发送数据
	// data: 要发送的数据
	// 返回值:
	// int: 发送的字节数
	// error: 错误信息
	Send(data []byte) (int, error)
	// Close 关闭链接
	Close()
	// OnDataArrival 数据到达回调函数
	// func (data []byte): 数据到达回调函数
	OnDataArrival(func(data []byte))
	// OnStateChange 状态改变回调函数
	OnStateChange(func(state ConnectState))
}

// CreateClient 创建客户端
func CreateClient(t Type) ClientApi {
	if t == Tcp {
		return new(TcpClient)
	} else if t == Udp {
		return new(UdpClient)
	}
	return nil
}
